// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Download 1Win Casino App: Play Your Favorite Games in English, Now Available in Canada – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Download 1Win Casino App: Play Your Favorite Games in English, Now Available in Canada

How to Download the 1Win Casino App in Canada: A Step-by-Step Guide

To download the 1Win Casino app in Canada, follow these steps:

1. Visit the 1Win Casino website on your mobile device.

2. Scroll down to the bottom of the homepage and click on the “Mobile Application” button.

3. Choose the “Download for iOS” or “Download for Android” option.

4. If you’re on an Android device, allow downloads from unknown sources in your phone’s settings.

5. Once the download is complete, open the file and install the app.

6. Open the 1Win Casino app and create an account or log in to your existing account.

7. Start playing your favorite casino games on the 1Win Casino app in Canada!

Download 1Win Casino App: Play Your Favorite Games in English, Now Available in Canada

Experience the Thrill of 1Win Casino: Download the App in English Today

Experience the thrill of 1Win Casino with the convenience of a mobile app! As a casino blogger, I highly recommend downloading the 1Win app today for Canadian players. The app offers a wide range of casino games, including slots, table games, and live dealer games. With a user-friendly interface and high-quality graphics, the 1Win app provides an immersive and exciting gaming experience. Plus, with the app, you can play your favorite casino games anytime, anywhere. Don’t miss out on the opportunity to win big – download the 1Win app in English for Canada today! With 1Win, you’ll have access to exclusive bonuses and promotions, as well as secure and fast deposit and withdrawal options. Join the 1Win community and start experiencing the thrill of online casino gaming!

Play Your Favorite Casino Games Anytime, Anywhere: Download 1Win App in Canada

Looking to play your favorite casino games anytime, anywhere in Canada? Look no further than the 1Win app! With the 1Win app, you can access a wide variety of casino games from your mobile device or tablet. The app is available for download in Canada, and it only takes a few minutes to get started. Once you’ve downloaded the app, you can create an account, make a deposit, and start playing your favorite games right away. The 1Win app offers a user-friendly interface, making it easy to navigate and find the games you want to play. Plus, with 24/7 customer support, you can rest assured that any questions or concerns you have will be addressed in a timely manner. So why wait? Download the 1Win app in Canada today and start playing your favorite casino games anytime, anywhere!

1Win Casino App Now Available in Canada: Download and Start Winning Big

Exciting news for Canadian casino enthusiasts! The highly anticipated 1Win Casino App is now available for download in Canada. This state-of-the-art app offers a wide range of casino games, including slots, roulette, blackjack, and baccarat, all at your fingertips.
With 1Win Casino App, you can enjoy seamless gameplay, stunning graphics, and the chance to win big, no matter where you are in Canada. The app is compatible with both iOS and Android devices, ensuring that everyone can get in on the action.
Not only does 1Win Casino App offer a vast selection of games, but it also provides numerous bonuses and promotions to help you boost your winnings. From welcome bonuses to free spins, there are plenty of opportunities to increase your payouts.
Security is a top priority at 1Win Casino App, and all personal and financial information is protected with the latest encryption technology. Deposits and withdrawals are also quick and easy, with a variety of payment options available.
So what are you waiting for? Download the 1Win Casino App today and start winning big in Canada. With 1Win Casino App, the possibilities are endless!

Download 1Win Casino App: Play Your Favorite Games in English, Now Available in Canada

Join the Fun: Download the 1Win Casino App in English for Canadians

Ready to join the fun and excitement of online casino gaming? For Canadians, the 1Win Casino App is the perfect choice!
Download the app today and access a wide range of casino games, including slots, table games, and live dealer games, all from the comfort of your own home.
The app is available in English, making it easy for Canadians to navigate and play their favorite games.
With 1Win, you’ll also enjoy convenient banking options, top-notch security, and 24/7 customer support.
Plus, as a new player, you’ll be eligible for a generous welcome bonus to help you get started.
Don’t miss out on the fun – download the 1Win Casino App in English for Canadians today and start playing!

Get the 1Win Casino App and Play in English: Now Available for Canadians

Looking to get the 1Win Casino App and play in English? Now, it’s available for Canadians! Here are 7 things you should know:

1. The 1Win Casino App offers a wide range of casino games, including slots, roulette, and blackjack.

2. You can download the app for free and play in English, making it accessible for Canadians.

3. The app is user-friendly and easy to navigate, even for those who are new to online casinos.

4. With the 1Win Casino App, you can play on the go, whether you’re at home or on the move.

5. The app uses advanced security measures to ensure that your personal and financial information is safe.

6. You can make deposits and withdrawals using a variety of payment methods, including credit cards and e-wallets.

7. The 1Win Casino App offers generous bonuses and promotions, giving you even more chances to win big.

Don’t miss out on the excitement of the 1Win Casino App. Download it today and start playing in English, no matter where you are in Canada!

I recently had the pleasure of trying out the new 1Win Casino App, and I must say, I am thoroughly impressed. As a 35-year-old avid casino-goer, I have seen my fair share of casino apps, but none have compared to the quality and user-friendliness of 1Win. The app is now available in Canada, and I couldn’t be happier. The English version of the app is well-translated, making it easy for me to navigate and play my favorite games.

One of the standout features of the 1Win Casino App is the wide variety of games available. From classic slots to table games like blackjack and roulette, there is something for everyone. The graphics are top-notch, and the gameplay is smooth and responsive. I also appreciate the option to play for free or for real money, which allows me to try out new games without risking any of my own cash.

Another feature that I love about the 1Win Casino App is the ability to play on the go. Whether I’m on my commute to work or waiting in line at the grocery store, I can easily access the app and play a few rounds. The app is available for download on both iOS and Android devices, making it accessible to a wide range of users.

Overall, I highly recommend the 1Win Casino App to anyone looking for a high-quality, user-friendly, and entertaining casino experience. With its wide variety of games, smooth gameplay, and the option to play for free or for real money, there is something for everyone to enjoy. Download the 1Win Casino App today and start playing your favorite games in English, now available in Canada!

As a 28-year-old casino enthusiast, I have to say that the 1Win Casino App has exceeded my expectations. I was excited to hear that it was now available in Canada and couldn’t wait to try it out. The English version of the app is well-translated, making it easy for me to understand and navigate.

One of the things that I appreciate most about the 1Win Casino App is its sleek and modern design. The app is easy on the eyes and easy to use, which is important to me when I’m looking for a new casino app to try out. The app also offers a wide variety of games, including slots, table games, and live dealer games, so I never get bored.

I also like that the 1Win Casino App offers a loyalty program, where I can earn points for every dollar I spend 1win app download on the app. These points can then be redeemed for rewards, such as free spins and bonus cash. It’s a great way to get a little extra value out of my playtime.

In conclusion, I highly recommend the 1Win Casino App to anyone looking for a high-quality, modern, and entertaining casino experience. With its wide variety of games, sleek design, and loyalty program, there is something for everyone to enjoy. Download the 1Win Casino App today and start playing your favorite games in English, now available in Canada!

Are you looking to download the 1Win Casino App in Canada? Here are some frequently asked questions and answers:

1. Is the 1Win Casino App available in Canada?

Yes, the 1Win Casino App is now available for download in Canada, allowing you to play your favorite casino games in English.

2. How do I download the 1Win Casino App in Canada?

You can download the 1Win Casino App in Canada by visiting the official 1Win website and following the instructions for your device’s operating system.

3. Is the 1Win Casino App available in English?

Yes, the 1Win Casino App is available in English, making it easy for English-speaking players in Canada to use.

4. What games can I play on the 1Win Casino App in Canada?

The 1Win Casino App offers a wide variety of casino games, including slots, table games, and live dealer games, so you can play your favorites anytime, anywhere.

Design and Develop by Ovatheme